/**
 * ClassName Hanoi
 * Description TODO
 * Author Yanyan
 * Date 2025/11/5 15:59
 * Version 1.0
 */
public class Hanoi {
    //用递归解决汉诺塔问题


    //用于打印操作过程，从哪个柱子移动到哪个柱子
    public static void move(char pos1,char pos2) {
        System.out.print(pos1 + "——>" + pos2 + " ");
    }

    /**
     *
     * @param n      盘子个数
     * @param pos1   起始位置
     * @param pos2   中转位置
     * @param pos3   终止位置
     */
    public static void hanoi(int n,char pos1,char pos2,char pos3) {
        if(n == 1){
            move(pos1,pos3);
            return;
        }
        hanoi(n-1,pos1,pos3,pos2);//先把n-1个盘子借助pos3移动到pos2
        move(pos1,pos3);//把最下面的盘子放到pos3
        hanoi(n-1,pos2,pos1,pos3);//把放在pos2上的n-1个盘子借助pos1移动到pos3
    }

    public static void main(String[] args) {
        hanoi(5,'A','B','C');
    }

}
